package com.employment.entity;

import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 求职申请实体类
 * 对应数据库表：job_application
 * 
 * @author Employment System
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Table("job_application")
public class JobApplication extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 申请ID
     */
    @Id(keyType = KeyType.Auto)
    private Long applicationId;

    /**
     * 职位ID
     */
    private Long jobId;

    /**
     * 简历ID
     */
    private Long resumeId;

    /**
     * 求职者ID
     */
    private Long userId;

    /**
     * 公司ID
     */
    private Long companyId;

    /**
     * 求职信
     */
    private String coverLetter;

    /**
     * 期望薪资
     */
    private BigDecimal expectedSalary;

    /**
     * 可入职时间
     */
    private LocalDate availableDate;

    /**
     * 申请状态：1待查看，2已查看，3面试邀请，4面试中，5已录用，6已拒绝，7已撤回
     */
    private Integer status;

    /**
     * 查看时间
     */
    private LocalDateTime viewTime;

    /**
     * 查看人
     */
    private Long viewedBy;

    /**
     * 回复内容
     */
    private String replyContent;

    /**
     * 回复时间
     */
    private LocalDateTime replyTime;

    /**
     * 面试时间
     */
    private LocalDateTime interviewTime;

    /**
     * 面试地址
     */
    private String interviewAddress;

    /**
     * 面试联系人
     */
    private String interviewContact;

    /**
     * 面试联系电话
     */
    private String interviewPhone;

    /**
     * 面试备注
     */
    private String interviewNote;

    /**
     * 拒绝原因
     */
    private String rejectReason;

    /**
     * 评分（1-10分）
     */
    private BigDecimal score;

    /**
     * 评价
     */
    private String evaluation;
}